<?php

class Utils
{
    /**
     * Подготавливает строку для вставки в БД
     * 
     * Подготавливает переданную строку, пришедшую из XML
     * для вставки в БД 
     *
     * @param string $string
     * @return string
     */
    public static function prepareXMLString($string)
    {
        $string = strip_tags($string);
        $string = str_replace('\\\'', '\'', $string);
        $string = str_replace('\\"', '"', $string);
        
        $string = str_replace(array("\r\n", "\n", '<br>', '<br/>', '<br />'), ' ', $string);
        $string = preg_replace('~ +~', ' ', $string);
        $string = html_entity_decode(trim($string), ENT_QUOTES, 'UTF-8');
        
        return $string;
    }
    
    /**
     * Подготавливает e-mail для вывода
     *
     * @param string $email
     * @param string $text
     * @return string
     */
    public static function mailto($email, $text = null)
    {
        if (empty($text)) {
            $text = $email;
        }
    
        $string = 'document.write(\'<a href="mailto:'.$email.'">'.$text.'</a>\');';

        $js_encode = '';
        for ($x=0; $x < strlen($string); $x++) {
            $js_encode .= '%' . bin2hex($string[$x]);
        }

        return '<script type="text/javascript">eval(unescape(\''.$js_encode.'\'))</script>';
    }
    
    /**
     * Транслит текста
     *
     * @param string $str
     * @return string
     */
    public static function translateStr($str){
        $tbl= array(
            'а'=>'a', 'б'=>'b', 'в'=>'v', 'г'=>'g', 'д'=>'d', 'е'=>'e', 'ж'=>'g', 'з'=>'z',
            'и'=>'i', 'й'=>'y', 'к'=>'k', 'л'=>'l', 'м'=>'m', 'н'=>'n', 'о'=>'o', 'п'=>'p',
            'р'=>'r', 'с'=>'s', 'т'=>'t', 'у'=>'u', 'ф'=>'f', 'ы'=>'i', 'э'=>'e', 'ё'=>"yo",
            'х'=>"h", 'ц'=>"c", 'ч'=>"ch", 'ш'=>"sh", 'щ'=>"shch", 'ъ'=>"", 'ь'=>"", 'ю'=>"yu",
            'я'=>"ya", '&quot' => ''
        );
        $not_support_chars = '/[^-a-zA-Zа-яА-яёЁ0-9_ ]/iu';
        
        $str = mb_strtolower($str, 'UTF-8');
        
        $str = preg_replace($not_support_chars, '', $str);
        $str = trim($str);
        
        $m = array();
        preg_match_all('/(\p{L}|\p{N})+/ui', $str, $m);
        if (!empty($m)) {
            return strtr(implode('-', $m[0]), $tbl);
        } else {
            return '';
        }
    }
}